package com.aliang.shopping.model.converter;

import com.aliang.shopping.model.dto.common.UpdateStatusDTO;
import com.aliang.shopping.model.dto.goodsSpec.GoodsSpecInsertDTO;
import com.aliang.shopping.model.dto.goodsSpec.GoodsSpecUpdateDTO;
import com.aliang.shopping.model.po.GoodsSpec;
import com.aliang.shopping.model.vo.TreeVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;

import java.util.List;

/**
 * 商品规格信息数据转换器
 */
@Mapper(componentModel = "Spring")
public interface GoodsSpecConverter {
    
    /**
     * 将商品规格信息插入数据传输对象转换为商品规格信息实体
     *
     * @param insertDTO
     * @return
     */
    GoodsSpec toPoByInsertDTO(GoodsSpecInsertDTO insertDTO);

    /**
     * 将商品规格信息更新数据传输对象转换为商品规格信息实体
     *
     * @param updateDTO
     * @return
     */
    GoodsSpec toPoByUpdateDTO(GoodsSpecUpdateDTO updateDTO);

    /**
     * 将商品规格信息更新状态数据传输对象转换为商品规格信息实体
     *
     * @param updateDTO
     * @return
     */
    GoodsSpec toPoByUpdateStaticDTO(UpdateStatusDTO updateDTO);


    @Mappings({
            @Mapping(target = "value", source = "id"),
            @Mapping(target = "label", source = "specName")
    })
    TreeVO toVo(GoodsSpec goodsSpec);

    List<TreeVO> toVoList(List<GoodsSpec> goodsSpecList);
}
